package com.szrt.day20170407;

import static org.junit.Assert.*;

import org.junit.Test;

/**
 * 这个类 中 用来演示数组的用法
 * @author scott-13926583118
 * 2017年4月7日
 * 
 * 8中基本类型的初始化值都是啥？
 * 
 *    int 0  double 0.0
 *
 */
public class ArrayTest {
	
	
	/**
	 * 数组如何定义 凡是引用类型（不是基本类型的就是引用类型）的内存地址都分为2块
	 * 
	 * 1： 栈内存     变量的定义  moneys age ages  
	 * 			栈内存中运行速度快 只能保留一个值（基本类型） 一个座位只能座1个人
	 * 
	 * 2： 堆内存    凡是new出来的东西都放在堆内存中  
	 * 			而且根据类型的不同会有不同的初始化值  int 0  相当于1所房子 
	 * 
	 * 
	 * 赋值：
	 * 1： 栈内存     直接干掉  信任替换旧人
	 * 2： 堆内存     使用内存的首地址  房子的楼盘号  A210  赋值的时候直接传的是内存地址  
	 * 			 如果1个变量对堆内存中的信息进行了修改。那么其他变量的值  同步进行改变。
	 * 			 因为他们是同1所房子	
	 * 
	 * @throws Exception
	 */
	@Test
	public void arrayTest01() throws Exception {
		
		
		//在1中内存中搞定    栈内存  在栈内存中只能放1个值  1个座位只能做1个人
		int age = 18;
		
		age=20;
		
		
		//21 23 28 25 
		
		//数组的定义
		int[] ages;
		
		
		
		
		//数组的初始化
		ages= new int[4];
		
		
		ages[0]=21;
		ages[1]=23;
		ages[2]=28;
		ages[3]=25;
		
		
		
		int[] moneys;
		moneys=ages;
		
		
		
		moneys[0]=230;
		
		
		System.out.println(ages[0]);
		
		
		int a =3;
		
		System.out.println(a-=a*=a);
		System.out.println(a);
		
		
		//System.out.println(a+=a-=a*=a);
	}
	
	
	
	@Test
	public void arrayTest02() throws Exception {
		
		int[] ages= new int[4];
		
		
		ages[0]=21;
		ages[1]=23;
		ages[2]=28;
		ages[3]=25;
		
		
		int[] moneys=ages;
		
		changeArray(ages);
		
		
		
		
		
		System.out.println(ages[0]);
		System.out.println(moneys[0]);
	}
	
	
	@Test
	public void arrayTest03() throws Exception {
		
		// 2*10^1+1*10^0    0-9
		int age10=21; 
		
		
		//2*16^1+1*16^0     0-9   a b c d e f
		int age16=0x8000;
		
		System.out.println(age16);
		
		//2*8^1+1*8^0
		int age8=021;
		System.out.println(age8);
		
		
	}
	
	
	
	/**
	 * 静态的初始化 推荐
	 * @throws Exception
	 */
	@Test
	public void arrayTest04() throws Exception {
		
		
		//推荐
		int[] ages= {21,23,28,25};
		
		System.out.println(ages[0]);
		//System.out.println(ages[-1]);
		
	}
	
	
	/**
	 * 静态的初始化
	 * @throws Exception
	 */
	@Test
	public void arrayTest05() throws Exception {
		
		int[] ages= new int[]{21,23,28,25};
		
		System.out.println(ages[0]);
		//System.out.println(ages[-1]);
		
	}
	
	@Test
	public void arrayTest06() throws Exception {
		
		int[] ages={21,23,28,25};
		
		//做了什么事情
		//ages=null;
		
		System.out.println(ages[0]);
		
		
		
	}
	
	
	/**
	 * 二维数组
	 * @throws Exception
	 */
	@Test
	public void arrayTest07() throws Exception {
		
		
		int ages0=18;
		int[] ages1={1,2,3,4};
		int[] ages2={5,6,7,8};
		
		
		int[][] ages ={ages1,ages2};
		
		
		//打印出3
		
		int[] elments0 = ages[0];
		
		System.out.println(elments0.length);
		
		
		for(int index =0; index<elments0.length;index++){
			System.err.println(elments0[index]);
		}
		
		
		System.err.println(ages[0][2]);
		
		
		
		
		
		
		
		
	}
	
	
	/**
	 * 传地址
	 * @param arrays
	 */
	public void changeArray(int[] arrays){
		arrays[0]=10086;
	}
	

}
